阅读更多

11顶
0踩

非技术
再厉害的人也会遇到瓶颈,只有不断地提高自己和持之以恒才能突破。 jQuery的创始人和技术领袖,John Resig,在业余编程项目的瓶颈时期究竟采取了什么策略?来应对自己的危机? 无论你是否是程序猿,你都可以从中受益。

 

去年秋天我的业余编程项目(coding side projects)到了一个紧要关头:没有充足的进度,也不能够找到一种方法在既不牺牲我可汗学院(Khan Academy)高效的工作的前提下完成更多的事情。

如何处理我的业余编程项目是有一些严重问题的。我最主要是在周末或者某些工作日的晚上编写代码。如同结果一样,这种策略并不适合我。周末我拖着巨大的压力尝试完成尽可能多的高质量代码(如果我没能完成我会认为自己很失败)。这样想有一个问题,因为没有什么能够保证我每个周末都有空,并且想整个周末都写程序而不是抓紧机会放松或娱乐。

每周写代码之间空挡太长也是个问题。你很容易忘记在做什么、什么还没做完(即使做记录也于事无补)。更不用说如果你错过一个周末,你就会面对长达两周的间隔。大量两周或者更多周的思维转换可是致命的(我的很多业余项目都由于精力不足而终止)。

我被Jennifer Dewalt去年完成的工作震惊了,她在180天内构建了180个网站以学习编程。受到她的启发,我强迫自己尝试一个相似的策略:每一天都要进行我的业余项目。

我决定给自己制定一些规则:

  1. 我必须每天都写代码。我可以写文档,博客或其他的东西。但必须依附于我所写的代码。
  2. 代码必须是有用的。不能代码微调,不能代码重排,且尽量不要重构。(这些事情都是允许的,但不作为当天特有的工作。)
  3. 所有代码必须在午夜前写。
  4. 代码必须开源且放在Github上。

其中的一些规则有点武断。虽然从技术上来讲代码没必要非得在午夜前写,但我想要避免熬夜太久写糟糕的代码。而且代码没必要开源放在Github上。这只是强迫我写代码时多上点心(想想重用以及决定开发过程早点写模块)。

到目前为止我进行得很顺利,我已进行了20周的连续工作。我想要写下这些是因为这方法完全改变了我的编码方式并且对我的生活以及心智都有实质性的影响。

有这些规则后,习惯的改变导致了很多有趣的事情发生:

最少可行代码(Minimum viable code).每天我被强迫写至少30分钟的代码。(少量时间内很难写出有意义的代码,尤其是在记起前一天写到哪里后)有一些工作日我写得多点,但通常少于1小时。而周末,我有时候能一整天当程序猿。

编码即为习惯(Code as habit).其实重要的一点是我并不特别在意Github上的(负面)聊天内容是如何被他人理解的。我认为这是从这个实验中我学到的最重要的东西:这是关于在你一生中为了你自己而进行的改变而非为了让你的工作能讨好他人而进行的改变。这也适用于任何形式的节食或锻炼:如果你不在意提高自己,你是永远也不会成功的。

抵抗焦虑(Battling anxiety).在开始这个实验之前我经常担心不能够完成足够多的工作量或者取得足够的进展(这两点很难度量,因为我的业余项目没有明确的截止日期)。我发现想要取得进展与实际取得进展是同样的重要。这让我豁然开朗。一旦我开始每天取得持续的进展,焦虑就开始消失了。我对我不断完成的工作量感到欣慰,并且我不再过度疯狂地期望完成更多的工作。

周末(Weekends).在周末完成的任务曾今对于推进进度是绝对重要的。的确有地表性地,这是我完成业余项目显著代码量的唯一时间。但现在并非如此,不过非常好。在周末完成我一整周所期望的有价值的内容只能以让我以失望告终。我极少能够完成我想要完成的所有工作,而这强迫我放弃其他周末我喜欢的活动(例如,吃中式点心,参观博物馆,去公园以及和我的小伙伴在一起玩等)以完成更多的工作。虽然我非常相信业余项目真的很重要,但总之,他们不应该阻碍你的平时生活。

发呆(Background processing).每天都写业余项目的一个有趣的副作用就是当前业余项目的任务会频繁地在你大脑中浮现。这导致当我走路,洗澡或则进行其他不耗费脑力的活动时,我总是在想接下来我要写些什么代码并且寻找好的方法来解决问题(译者注:别人看来就是发呆)。这在我每周或隔一周写一次代码的时候从未出现过。相反这些时间花费在了思考其他的一些任务上,通常是懊恼自己上周没能完成业余项目的工作量。

思维转换(Context switch). 继续业余项目时总是会有思维转换代价的。不幸的是,当一整周都在干其他任务的工作时,这转变是及其困难的。就每天都写代码而言是非常有利的,因为工作间歇时间更短。这使得回忆起正在做什么更容易。

工作权衡(Work balance). 这个改变最重要的一方面是直接学会了如何更好地权衡工作/生活/业余项目。由于明确了我每天都会工作在业余项目上,我必须更好地平衡我的时间。如果我计划晚上外出并且会很晚才回来,那么我会在一天中早些时候,既在开始我的可汗学院的主要工作前,完成我的业余项目的工作量。而且如果我没有完成我的任务,并且在外待得很晚,我会赶回家完成他而不遗漏一天。我应该注意到了我拥有更少地时间可花费在爱好上(例如版画),但这是我需要面对的合理的折衷。

他人看法(Outward perception). 把这个新的习惯告诉别人让我更受益。我的小伙伴理解我需要每天完成这个工作,因此有的时候活动安排也很迁就我的工作。能够说“没问题,我们可以出去玩/看电影/等,但我等会儿要当会儿程序猿”并且能够被理解和考虑在内是相当欣慰的。

能写多少代码?我简直不敢相信我上个月写了多少代码。我制作了一堆新的网站,重写一些框架,并且创建了大量新的节点模块(node modules)。我写了如此的多,以至于我有时候都忘记了我到底干了些什么,前一周的工作都好像是很遥远的记忆样。我对我所完成的工作量是及其满意的。

我认为这个习惯改变是一个很大的成功并且希望能尽可能地继续下去。与此同时,我将倾尽所有将这个策略推荐给其他希望让其业余项目有实质进展的人。无论这个技术对于你是有用或者没用,请告诉我。我会非常乐意听更多的趣事的!

 

来自: 译言网
11
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • jQuery之父:每天都写点代码

    jQuery之父:每天都写点代码 2014/05/29 · 职场 · 1 评论 · John Resig, 编程 分享到: 26 本文由 伯乐在线 - 伯乐在线读者 翻译。未经许可,禁止转载! 英文出处:John Resig。欢迎...

  • jQuery之父:每天要坚持写代码!

    去年秋天我的支线代码项目遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法。 我主要在周末进行我的支线,当然有时候也在晚上进行。这个方法对我而言效果不佳。我的压力太重了,我需要在周末...

  • jQuery 之父:每天写代码

    去年秋天我的支线代码项目 遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下)。我主要在周末进行我的支线,当然有时候也在晚上进行。这个方法对...

  • jQuery之父:每天写代码

    每天必须写代码。我可以写文档、写博客或者写其他东西,但是这些不能代替写代码。 代码必须是实际起作用的。调整缩进、重新排版不算。如果有可能,重构也不算。(可以进行这些事情,但这些不能是一天唯一的编码。)...

  • jQuery之父:坚持每天都要写代码

    关于作者:John Resig, jQuery之父,同时也是Pro Javascript Techniques和Secrets of the JavaScript Ninja的作者。他目前主持 Khan Academy 的开发工作。 去年秋天我的支线代码项目遇到了一些问题,项目进展...

  • jQuery 之父:坚持每天写代码

    去年秋天我的支线代码项目遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下)。 我主要在周末进行我的支线,当然有时候也在晚上进行。这个方法...

  • 安装NumPy教程-详细版

    附件是安装NumPy教程_详细版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

  • 语音端点检测及其在Matlab中的实现.zip

    语音端点检测及其在Matlab中的实现.zip

  • C#文档打印程序Demo

    使用C#完成一般文档的打印,带有页眉,页脚文档打印,表格打印,打印预览等

  • DirectX修复工具-4-194985.zip

    directx修复工具 DirectX修复工具(DirectX repair)是系统DirectX组件修复工具,DirectX修复工具主要是用于检测当前系统的DirectX状态,若发现异常情况就可以马上进行修复,非常快捷,使用效果也非常好。

  • Python手动实现人脸识别算法

    人脸识别的主要算法 其核心算法是 欧式距离算法使用该算法计算两张脸的面部特征差异,一般在0.6 以下都可以被认为是同一张脸 人脸识别的主要步骤 1 获得人脸图片 2 将人脸图片转为128D的矩阵(这个也就是人脸特征的一种数字化表现) 3 保存人脸128D的特征到文件中 4 获取其他人脸转为128D特征通过欧式距离算法与我们保存的特征对比,如果差距在0.6以下就说明两张脸差距比较小

  • 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

    ciscn 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

  • JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译).zip

    JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)JAVA+SQL离散数学题库管理系统(源代码+LW+外文翻译)

  • strcmp函数应用.zip

    strcmp函数应用.zip

  • 蓝桥杯单片机第十一届国赛设计题试做

    蓝桥杯单片机第十一届国赛设计题试做

  • 基于MATLAB的pca人脸识别.zip

    基于MATLAB的pca人脸识别.zip

  • 520.html

    520.html

  • JAVA在线考试管理系统(源代码+LW+开题报告+外文翻译+英文文献+答辩PPT).zip

    JAVA在线考试管理系统(源代码+LW+开题报告+外文翻译+英文文献+答辩PPT)

  • STR710的定时器编程C语言例子,开发环境为IAR EWARM。.zip

    STR710的定时器编程C语言例子,开发环境为IAR EWARM。.zip

Global site tag (gtag.js) - Google Analytics